import PlayerCharacterEntity from "./PlayerCharacterEntity";

/**
 * 用户数据列
 */
export enum PlayerDataColums {
    /** 上次选择的角色 */
    lastChar = 'lstC',
    /** 玩家等级 */
    level = 'lv',
    /**
     * 背包容量
     */
    packSize = 'pz',

    /**
     * 传送场景id；
     */
    areaid = 'ar',
    /**
     * 已购产品
     */
    products = 'pd',
    /**
     * 金币
     */
    gold = 'g',


    /**
     * 库存
     */
    inventory = 'inv',
    /**
     * @deprecated
     */
    saveTel = "saveTel",
    PlaceSave = "PlaceSave",
    kills = "k",
    /** 讨伐boss成功 */
    killboss = "kb",
}
/**
 * 用户角色id
 */
export enum PlayerCharacterId {
    /** 角色：野蛮人 */
    /** 木头人 */
    C0 = "C0",
}


/**
 * 物品类型
 */
export enum StuffType {
    none = 0,
    /**
     * 武器
     */
    weapon = 1,
    NaN2,
    boots,
    arm,
    head,
    /** 肩甲 披风 */
    body,
    NaN7,
    /**
     * 回城卷轴
     */
    PortalScroll,
    Potion,
    /**skin */
    face,
    /** 本命武器 */
    sp,
    /** 套装皮肤 */
    suitSkin,
    /** 衣服 */
    clothes,
    food,
}
/**
 * 库存记录单元
 */
export interface InventoryEntity {
    /**
     * 装备代码
     */
    code: string,
    /**
     * 数量
     */
    size?: number,
    /**
     * 在储物箱位置
     */
    chest?: number,
    /**
     * 在背包
     */
    pack?: number,
    /**
     * 装备位置
     */
    // equip?: StuffType,
    equipCharacter?: {
        [key: string]: StuffType | undefined
    }
    /**
     * 是否为缓存
     */
    cache?: number
    /**
     * 是否已经丢失
     */
    droped?: Boolean
    // /**
    //  * 快捷装备栏
    //  */
    // quick?: number

    quickCharacter?: {
        [key: string]: number | undefined
    }
}
/** 不同场景存储的数据 */
export interface PlaceSavedData {
    /** 出生位置 */
    tel?: string
}
export default class PlayerDataEntity implements Ctn.data.IPlayerDataEntity {
    [PlayerDataColums.lastChar]: PlayerCharacterId | undefined = undefined;
    [PlayerDataColums.killboss]: {
        [key: string]: boolean
    } = {};
    [PlayerDataColums.level]: string = '1';

    [PlayerDataColums.saveTel]: string = '1';
    [PlayerDataColums.PlaceSave]: {
        [area: string]: PlaceSavedData | undefined
    } = {};


    [PlayerDataColums.areaid]: string = '';
    [PlayerDataColums.packSize] = '50';
    [PlayerDataColums.products]: (number | string)[] = [];
    [PlayerDataColums.gold] = 0;
    [PlayerDataColums.kills] = 0;
    [PlayerDataColums.inventory]: InventoryEntity[] = [];

    /**player */
    [PlayerCharacterId.C0] = new PlayerCharacterEntity(PlayerCharacterId.C0);
}